package material.command.party;

public class MacroCommand implements Command {
    Command[] commands;

    /**
     * 在宏命令中，用命令数组存储一大堆命令
     *
     * @param commands
     */
    public MacroCommand(Command[] commands) {
        this.commands = commands;
    }

    /**
     * 当这个宏命令被遥控器执行时，就一次性执行数组里的每一个命令
     */
    @Override
    public void execute() {
        for (int i = 0; i < commands.length; i++) {
            commands[i].execute();
        }

    }

    /**
     * 批量撤回时需要从最后一个指令依次往前执行
     */
    @Override
    public void undo() {
        for (int i = commands.length - 1; i >= 0; i--) {
            commands[i].undo();
        }
    }
}
